package com.maven.ioc;

import com.maven.ioc.controller.UserController;
import com.maven.ioc.model.UserInfo;
import com.maven.ioc.rep.UserRepository;
import com.maven.ioc.service.UserService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.ComponentScan;
// 这个是添加扫描路径
// 默认情况下 是 该文件所在的文件夹
//@ComponentScan("com.maven.ioc")
@SpringBootApplication
public class IoCApplication {


    public static void main(String[] args) {
        //  这里用 ApplicationContext 来接收 其 返回值，主要是 获取 其上下文
         ApplicationContext context=SpringApplication.run(IoCApplication.class, args);

   /*      // 获取 上下文（bean） 中的 对象
        //方法一 ： 通过 类名  获取
        // 适用于 ： 一个类中只有一个对象
        UserController userController = context.getBean(UserController.class);
        userController.u1();

        // 方法二 ： 通过 bean 名称 获取
        // bean 名称 ： 当 将这个类 丢给 spring 进行 管理的时候，spring就会给 它 起一个 bean 名称，用来记忆
        // bean 命名方法 ：
        // 类名为大驼峰：bean 将首字母小写，其他不变，
        // 前2个元素均为大写，使用原类名
        // 适用于： bean 名称不同
        UserService userService = (UserService) context.getBean("userService");
        userService.u1();

        // 方法三 ： 通过类名 和 bean 名称获取
        // 适用于： 大部分
        UserRepository userRepository = context.getBean( "userRepository",UserRepository.class);
        userRepository.u1();


        UserInfo u1 = (UserInfo) context.getBean("u1",UserInfo.class);
        System.out.println(u1);*/
    }

}